Skip to content

Conversation

@bootc-bot
Copy link
Contributor

@bootc-bot bootc-bot bot commented Oct 27, 2025

Created by GitHub workflow (source).

This PR synchronizes common files from the infra repository.

Synchronized from bootc-dev/infra@ac9dac0.

cgwalters and others added 30 commits July 17, 2025 16:06
Make `ostree container image pull` merge commit reproducible
We don't actually publish any of these so there's no need
for this.
Just organizational cleanup, a number of Rust projects
do this:
https://github.com/search?q=+%22crates%2F*%22+path%3ACargo.toml+-is%3Afork&type=code&p=5

Signed-off-by: Colin Walters <[email protected]>
This moves all of the code related to handling decompression out of
container/unencapsulate.rs and into a new module `generic_decompress`.
The only exposed API is via the existing (relocated) `Decompressor`
type.

Internal to `generic_decompress` this adds a new trait
`ReadWithGetInnerMut`, which allows access to the original, inner,
un-decompressed stream.  This is used when finishing the decompressor,
whether explicitly through calling its `finish()` method, or
implicitly by dropping it.

For things like GzDecoder, we don't want to read via the actual
decompression reader because we don't care about decompressing at this
point.  Plus, the inner reader may have encountered an error partway
through, and trying to decode via decompression will error with
UnexpectedEof.

Instead, wrap a reader for each content type which implements
`ReadWithGetInnerMut`.  When we finish decompressing, use the trait
method `get_inner_mut()` to read directly from inner stream to flush
any data.

Resolves: #1407
Signed-off-by: John Eckersberg <[email protected]>
unencapsulate: use "inner" stream when finishing Decompressor
I've come to the conclusion that Task isn't buying us much value
over Command.

I'd like to eventually drop it. This is just getting the ball
rolling.

Signed-off-by: Colin Walters <[email protected]>
This is intended to aid unit testing outside of `upgrade --apply`.

Signed-off-by: Colin Walters <[email protected]>
And add a single test which verifies that our internal `reboot`
code actually does what it should (via systemd-run etc.)

This took me way, way too long to do...there were so many missteps
and confusion. First of all, I kept trying to use `systemd.extra-unit`
from https://www.freedesktop.org/software/systemd/man/latest/systemd-debug-generator.html#
but that doesn't exist in stream9.

I spent way too long trying to debug the fact that switching from
`podman run <image> /sbin/init` to `podman run <image> /bin/sh -c '<stuff> && exec /sbin/init`
fails because in the latter case podman's auto-detection fails and
we need to explicitly say `--systemd=always`. In retrospect obvious...but oh well.

On the positive side, I think with some cleanup we could extend this model
and generalize it for "test running in a container with systemd" (with
a lot of cleanup really)

Signed-off-by: Colin Walters <[email protected]>
Add a test case for our internal reboot command
cli: fix documentation of `bootc image cmd`
Add fork+exec based cleanup helper to prevent loopback device leaks when
bootc install --via-loopback is interrupted by signals like SIGINT.

- Add loopback-cleanup-helper CLI subcommand
- Implement run_loopback_cleanup_helper() with PR_SET_PDEATHSIG
- Update LoopbackDevice to spawn cleanup helper process
- Add tests for spawn mechanism
blockdev: Fix loopback device resource leak on signal interruption
Revert "blockdev: implement signal-safe loopback device cleanup helper"
This adds two github actions, "Create Release PR" and "release". The
first is scheduled to run every 3 weeks to automatically create a
release PR that bumps the versions. The "release" action is triggered
when the release PR is merged. It will create a draft release with the
tars attached.

Assited-by: Claude Code
Signed-off-by: ckyrouac <[email protected]>
Also pull in `composefs-boot` and `composefs-oci`

Signed-off-by: Johan-Liebert1 <[email protected]>
This fixes the bug where the specific layers were looking at the wrong
meta object to allocate files to the layer.

Assisted-by: Claude code
Signed-off-by: ckyrouac <[email protected]>
These are failing due to infra issues apparently, and
we have coverage at release time, we really don't
need to build every single PR by default.

Signed-off-by: Colin Walters <[email protected]>
If enabled this pulls in git main of ostree which I want
for soft reboot work.

Signed-off-by: Colin Walters <[email protected]>
To paper over the fork-vs-fsverity issue a bit
more.

Signed-off-by: Colin Walters <[email protected]>
This is soon to go EOL and I don't think we need
to keep testing it upstream.

In particular the integration tests are super expensive
and slow and this should cut down our usage of them.
Add fork+exec based cleanup helper to prevent loopback device leaks when
bootc install --via-loopback is interrupted by signals like SIGINT.

- Add loopback-cleanup-helper CLI subcommand
- Implement run_loopback_cleanup_helper() with PR_SET_PDEATHSIG
- Update LoopbackDevice to spawn cleanup helper process
- Add tests for spawn mechanism
chunking: Fix specific component file allocation
Dockerfile: Support pulling in the continuous repo
jeckersb and others added 22 commits September 9, 2025 16:58
Split the kernel command line parsing functionality into two focused
modules. The `bytes` module handles raw byte parsing without UTF-8
requirements, matching kernel behavior for arbitrary byte
sequences. The `utf8` module provides string-based parsing for cases
where UTF-8 validation is needed.  The `utf8` module reuses the
`bytes` module primitives where possible, and uses the fact that
`utf8::Cmdline` can only be constructed from valid UTF-8 to do
unchecked conversions between the two.

Signed-off-by: John Eckersberg <[email protected]>
tests: Verify we emit journal messages
ostree: Set parent of merge commit to base commit if present
- Removed `From<bytes::Parameter>` implementation for
  `utf8::Parameter` and similar for `utf8::ParameterKey`.  This was
  public and would allow end-users to construct utf8 parameters from
  non-utf8 data.  Replaced internally with `from_bytes` in the places
  where we know we can safely convert known-UTF-8 data.

- Added `TryFrom<bytes::Paramter>` implementation for
  `utf8::Parameter` to allow checked conversions, plus tests.

- Added `iter_utf8` and `find_utf8` to `bytes::Cmdline`, plus tests.

- Updated `find_root_args_to_inherit` in bootc to use these
  improvements.  Notably bootc will now allow non-UTF8 data in the
  kernel cmdline, *unless* it occurs in parameters that bootc is
  explicitly looking for.

- Added more tests to `find_root_args_to_inherit` to validate expected
  functionality with non-UTF-8 data.

- Fixed a parser bug that gemini pointed out with unmatched quotes,
  plus tests to check for that.

Signed-off-by: John Eckersberg <[email protected]>
kernel_cmdline: Refactor into separate `bytes` and `utf8` modules
test: Add integration test running on github runner
Add `add_or_modify` and `remove` methods to `Cmdline` in both `bytes`
and `utf8` modules, along with unit tests.

Closes: #1596
Signed-off-by: John Eckersberg <[email protected]>
kernel_cmdline: Add parameter manipulation methods
No functional changes, prep for further work.

Signed-off-by: Colin Walters <[email protected]>
store: Move inner merge commit writing to a helper function
Over in bootc-dev/bootc#1607
I actually *just* deduplicated this code, but that isn't
ready to merge yet.

Signed-off-by: Colin Walters <[email protected]>
integration: Copy distro-sync from main Dockerfile
See the updates to `Justfile` for how to use this.

Closes: #1428

Assisted-By: Claude Code (opus + sonnet)
Signed-off-by: Colin Walters <[email protected]>
Switch to hand-written man pages with auto option sync
A key thing for me is that the `Justfile` should be a one-stop
shop for development of the project. It can't have everything but
it should answer the basic questions of "how do I build and test
this project".

This aligns the recently added tmt-on-GHA flow a *bit* more closely
with some of that. Biggest is to use the `just build-integration-test-image` as the canonical
way to build a container image with our testing stuff in it;
which uses our main Dockerfile

Other cleanups:
- Change test script to move into tests/tmt/ as a workaround for
  teemtee/tmt#3037 (comment)
- Change the qemu logic to use SMBIOS credentials so we don't
  have to carry around both a disk image and a SSH key
- Change qemu to use `-snapshot` so we can reuse disks
- Change the scripts to accept data via argv[1] and not environment
- Drop the hardcoded testing directory and use `target/` as
  a generic build artifact dir

Signed-off-by: Colin Walters <[email protected]>
Signed-off-by: Colin Walters <[email protected]>
Synchronized from bootc-dev/infra@5661ee4.

Signed-off-by: bootc-dev Bot <[email protected]>
Co-authored-by: bootc-dev Bot <[email protected]>
Synchronized from bootc-dev/infra@3249ff0.

Signed-off-by: bootc-dev Bot <[email protected]>
Co-authored-by: bootc-dev Bot <[email protected]>
@bootc-bot bootc-bot bot requested a review from gursewak1997 October 27, 2025 16:43
@bootc-bot bootc-bot bot force-pushed the sync-common-files branch 3 times, most recently from 29ab5d6 to 4c39d3e Compare November 5, 2025 18:47
Synchronized from bootc-dev/infra@ac9dac0.

Signed-off-by: bootc-dev Bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.